문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 컴퓨터에서의 수 표현 (문단 편집) ==== Unsigned의 덧셈 ==== 두 {{{unsigned int}}} x, y를 더할 때, x + y가 가질 수 있는 범위는 [math(0 \le x + y \le 2^{w + 1} - 2)]이고, 이 범위는 w비트로 표현할 수 없다. 엄밀히 말하자면, 받아올림(carrying)이 발생하여 w비트로는 표현할 수 없게 된다. 이때, 컴퓨터는 가장 아래쪽 w비트만을 출력한다. 즉, 값 올림을 그대로 무시한다(버린다, truncate). 이렇게 계산 결과가 받아올림으로 표현의 범위를 초과해 잘못된 계산 결과를 출력하는 현상을 [[오버플로]](overflow)라 한다. 이 오류는 구조적인 문제이므로 근본적인 디버그가 불가능하다. 이를 방지하려면 무작정 비트 수를 늘리는 방법 밖에는 없다. 8비트는 2^^8^^-1=255, 16비트는 2^^16^^-1=65535, 32비트는 2^^32^^-1=4294967295를 넘길 경우 발생하지만, 64비트 2^^64^^-1=18446744073709551615 정도면 일부러 오버플로를 내려 하지 않는 이상 거의 안 난다고 보는 것이 맞을 것이다. 예를 들어, w = 4인 시스템에서 9 + 12를 계산한다면 * 9 + 12 = 1001,,(2),, + 1100,,(2),, = __1__0101,,(2),, 이 나온다. 여기서 밑줄 친 __1__은 받아올림이 일어난 부분을 의미한다. 이때 컴퓨터는 이 1을 무시하여 계산 결과를 0101,,(2),,로 인식한다. 따라서 9 + 12 = 0101,,(2),, = 5로 계산된다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기